// OctagonMask.js
cc.Class({
    extends: cc.Component,

    properties: {
        targetSprite: {
            default: null,
            type: cc.Sprite
        } // 绑定头像Sprite节点
    },

    onLoad: function () {
        // 安全校验
        // if (!this.targetSprite) {
        //     cc.error("未绑定 targetSprite！");
        //     return;
        // }
        const graphics = this.getComponent(cc.Graphics);
        graphics.clear();

        // 根据头像大小计算半径
        const radius = Math.min(
            this.targetSprite.node.width,
            this.targetSprite.node.height
        ) / 2;

        // 绘制八角形路径
        graphics.moveTo(radius, 0);
        for (let i = 1; i <= 8; i++) {
            const angle = (i * Math.PI) / 4;
            graphics.lineTo(
                radius * Math.cos(angle),
                radius * Math.sin(angle)
            );
        }
        graphics.close();
        graphics.fill();
    }
});